package com.slofzx.nuoda.evaluation.project.dto;


import com.baomidou.mybatisplus.annotation.TableField;
import com.slofzx.nuoda.common.dto.CommonFilterQueryDTO;
import com.slofzx.nuoda.common.dto.PageDTO;
import com.slofzx.nuoda.evaluation.ref.steretype.ModelExportConfig;
import com.slofzx.nuoda.evaluation.ref.steretype.ModelExportItemConfig;
import com.slofzx.nuoda.evaluation.steretype.ExcelExportItemConfig;
import org.apache.ibatis.type.JdbcType;

import java.util.Set;

/**
 * 项目评价结果数据数据传递类
 *
 * @author nuoda
 * @since 2023-11-22 13:55:54
 */
@ModelExportConfig(yearRelated = false)
public class ProjectReportDetailDTO extends CommonFilterQueryDTO {
    private static final long serialVersionUID = 374066346036398808L;
    /**
     * 数据id
     */
    private String id;
    /**
     * 计算版本id
     */
    private String computeVersion;
    /**
     * 数据标记
     */
    private String mark;
    /**
     * 项目id
     */
    private String projectId;
    /**
     * 税前内部收益率
     */
    @ModelExportItemConfig(id="irr_before_tax",name="税前内部收益率")
    private Double irrBeforeTax;
    /**
     * 税后内部收益率
     */
    @ModelExportItemConfig(id="irr_after_tax",name="税后内部收益率")
    private Double irrAfterTax;
    /**
     * 税前财务净现值
     */
    @ModelExportItemConfig(id="npv_before_tax",name="税前财务净现值")
    private Double npvBeforeTax;
    /**
     * 税后财务净现值
     */
    @ModelExportItemConfig(id="npv_after_tax",name="税后财务净现值")
    private Double npvAfterTax;
    /**
     * 税前投资回收期
     */
    @ModelExportItemConfig(id="pbp_before_tax",name="税前投资回收期")
    private Double pbpBeforeTax;
    /**
     * 税后投资回收期
     */
    @ModelExportItemConfig(id="pbp_after_tax",name="税后投资回收期")
    private Double pbpAfterTax;

    /**
     * 经济极限年
     */
    @ModelExportItemConfig(id="economic_limit_year",name="评价截止年")
    private Integer economicLimitYear;
    /**
     * 总投资
     */
    @ModelExportItemConfig(id="total_invest",name="总投资")
    private Double totalInvest;

    /**
     * 建设投资
     */
    @ModelExportItemConfig(id="construction_invest",name="建设投资")
    private Double constructionInvest;

    /**
     * 税后净利润
     */
    @ModelExportItemConfig(id="net_profit_after_tax",name="税后净利润")
    private Double netProfitAfterTax;
    @ModelExportItemConfig(id="sum_output_year",name="年产量合计")
    private Double sumOilOutput;
    /**
     * 项目日产
     */
    @ModelExportItemConfig(id="project_day_output",name="项目日产")
    private Double projectDayOutput;
    /**
     * 水平井日产
     */
    @ModelExportItemConfig(id="horizontal_day_output",name="水平井日产")
    private Double horizontalDayOutput;
    /**
     * 直井日产
     */
    @ModelExportItemConfig(id="vertical_day_output",name="直井日产")
    private Double straightOutput;
    /**
     * 评价报告id
     */
    private String reportId;

    private Set<String> filterProjectSet;
    /**
     * 单位完全成本(美元/桶)
     */
    @ModelExportItemConfig(id="unit_total_operate_cost_dollar",name="单位完全成本(美元/桶)")
    private Double unitTotalOperateCostDollar;
    /**
     * 单位操作成本(美元/桶)
     */
    @ModelExportItemConfig(id="unit_operate_cost_dollar",name="单位操作成本(美元/桶)")
    private Double unitOperateCostDollar;

    /**
     * 总完全成本(美元)
     */
    @ModelExportItemConfig(id="total_operate_cost_dollar",name="总完全成本(美元)")
    private Double totalOperateCostDollar;
    /**
     * 总操作成本(美元)
     */
    @ModelExportItemConfig(id="operate_cost_dollar",name="总操作成本(美元)")
    private Double operateCostDollar;

    /**
     * 原油商品量(美元)
     */
    @ModelExportItemConfig(id="oil_commodity_volume_bbl",name="原油商品量(桶)")
    private Double oilCommodityVolumeDollar;
    /**
     * 单位完全成本(元/吨)
     */
    @ModelExportItemConfig(id="unit_total_operate_cost",name="单位完全成本(元/吨)")
    private Double unitTotalOperateCost;
    /**
     * 单位操作成本(元/吨)
     */
    @ModelExportItemConfig(id="unit_operate_cost",name="单位操作成本(元/吨)")
    private Double unitOperateCost;
    /**
     * 基准平衡建设投资(万元)
     */
    @ModelExportItemConfig(id="balance_construction_invest",name="基准平衡建设投资(万元)",isBalanceResult = true)
    private Double balanceConstructionInvest;
    /**
     * 基准平衡累产油(万元)
     */
    @ModelExportItemConfig(id="balance_sum_oil_output",name="基准平衡累产油(万元)",isBalanceResult = true)
    private Double balanceSumOilOutput;
    /**
     * 基准平衡累产气(亿方)
     */
    @ModelExportItemConfig(id="balance_sum_gas_output",name="基准平衡累产气(亿方)",isBalanceResult = true)
    private Double balanceSumGasOutput;

    public Double getBalanceConstructionInvest() {
        return balanceConstructionInvest;
    }

    public void setBalanceConstructionInvest(Double balanceConstructionInvest) {
        this.balanceConstructionInvest = balanceConstructionInvest;
    }

    public Double getBalanceSumOilOutput() {
        return balanceSumOilOutput;
    }

    public void setBalanceSumOilOutput(Double balanceSumOilOutput) {
        this.balanceSumOilOutput = balanceSumOilOutput;
    }

    public Double getBalanceSumGasOutput() {
        return balanceSumGasOutput;
    }

    public void setBalanceSumGasOutput(Double balanceSumGasOutput) {
        this.balanceSumGasOutput = balanceSumGasOutput;
    }

    public Double getUnitTotalOperateCost() {
        return unitTotalOperateCost;
    }

    public void setUnitTotalOperateCost(Double unitTotalOperateCost) {
        this.unitTotalOperateCost = unitTotalOperateCost;
    }

    public Double getUnitOperateCost() {
        return unitOperateCost;
    }

    public void setUnitOperateCost(Double unitOperateCost) {
        this.unitOperateCost = unitOperateCost;
    }
    public Double getOilCommodityVolumeDollar() {
        return oilCommodityVolumeDollar;
    }

    public void setOilCommodityVolumeDollar(Double oilCommodityVolumeDollar) {
        this.oilCommodityVolumeDollar = oilCommodityVolumeDollar;
    }

    public Double getTotalOperateCostDollar() {
        return totalOperateCostDollar;
    }

    public void setTotalOperateCostDollar(Double totalOperateCostDollar) {
        this.totalOperateCostDollar = totalOperateCostDollar;
    }

    public Double getOperateCostDollar() {
        return operateCostDollar;
    }

    public void setOperateCostDollar(Double operateCostDollar) {
        this.operateCostDollar = operateCostDollar;
    }

    public Double getUnitTotalOperateCostDollar() {
        return unitTotalOperateCostDollar;
    }

    public void setUnitTotalOperateCostDollar(Double unitTotalOperateCostDollar) {
        this.unitTotalOperateCostDollar = unitTotalOperateCostDollar;
    }

    public Double getUnitOperateCostDollar() {
        return unitOperateCostDollar;
    }

    public void setUnitOperateCostDollar(Double unitOperateCostDollar) {
        this.unitOperateCostDollar = unitOperateCostDollar;
    }


    public ProjectReportDetailDTO() {
        //默认查询不分页
        this.pageSize = PageDTO.ALL;
    }

    public Double getProjectDayOutput() {
        return projectDayOutput;
    }

    public void setProjectDayOutput(Double projectDayOutput) {
        this.projectDayOutput = projectDayOutput;
    }

    public Double getHorizontalDayOutput() {
        return horizontalDayOutput;
    }

    public void setHorizontalDayOutput(Double horizontalDayOutput) {
        this.horizontalDayOutput = horizontalDayOutput;
    }

    public Double getStraightOutput() {
        return straightOutput;
    }

    public void setStraightOutput(Double straightOutput) {
        this.straightOutput = straightOutput;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getComputeVersion() {
        return computeVersion;
    }

    public void setComputeVersion(String computeVersion) {
        this.computeVersion = computeVersion;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public Double getIrrBeforeTax() {
        return irrBeforeTax;
    }

    public void setIrrBeforeTax(Double irrBeforeTax) {
        this.irrBeforeTax = irrBeforeTax;
    }

    public Double getIrrAfterTax() {
        return irrAfterTax;
    }

    public void setIrrAfterTax(Double irrAfterTax) {
        this.irrAfterTax = irrAfterTax;
    }

    public Double getNpvBeforeTax() {
        return npvBeforeTax;
    }

    public void setNpvBeforeTax(Double npvBeforeTax) {
        this.npvBeforeTax = npvBeforeTax;
    }

    public Double getNpvAfterTax() {
        return npvAfterTax;
    }

    public void setNpvAfterTax(Double npvAfterTax) {
        this.npvAfterTax = npvAfterTax;
    }

    public Double getPbpBeforeTax() {
        return pbpBeforeTax;
    }

    public void setPbpBeforeTax(Double pbpBeforeTax) {
        this.pbpBeforeTax = pbpBeforeTax;
    }

    public Double getPbpAfterTax() {
        return pbpAfterTax;
    }

    public void setPbpAfterTax(Double pbpAfterTax) {
        this.pbpAfterTax = pbpAfterTax;
    }

    public Double getTotalInvest() {
        return totalInvest;
    }

    public void setTotalInvest(Double totalInvest) {
        this.totalInvest = totalInvest;
    }

    public Integer getEconomicLimitYear() {
        return economicLimitYear;
    }

    public void setEconomicLimitYear(Integer economicLimitYear) {
        this.economicLimitYear = economicLimitYear;
    }

    public Double getNetProfitAfterTax() {
        return netProfitAfterTax;
    }

    public void setNetProfitAfterTax(Double netProfitAfterTax) {
        this.netProfitAfterTax = netProfitAfterTax;
    }

    public String getReportId() {
        return reportId;
    }

    public void setReportId(String reportId) {
        this.reportId = reportId;
    }

    public Set<String> getFilterProjectSet() {
        return filterProjectSet;
    }

    public void setFilterProjectSet(Set<String> filterProjectSet) {
        this.filterProjectSet = filterProjectSet;
    }

    public Double getSumOilOutput() {
        return sumOilOutput;
    }

    public Double getConstructionInvest() {
        return constructionInvest;
    }

    public void setConstructionInvest(Double constructionInvest) {
        this.constructionInvest = constructionInvest;
    }

    public void setSumOilOutput(Double sumOilOutput) {
        this.sumOilOutput = sumOilOutput;
    }



    @Override
    public String toString() {
        return "ProjectReportDetailDTO{" +
                "id='" + id + '\'' +
                ", computeVersion='" + computeVersion + '\'' +
                ", mark='" + mark + '\'' +
                ", projectId='" + projectId + '\'' +
                ", irrBeforeTax=" + irrBeforeTax +
                ", irrAfterTax=" + irrAfterTax +
                ", npvBeforeTax=" + npvBeforeTax +
                ", npvAfterTax=" + npvAfterTax +
                ", pbpBeforeTax=" + pbpBeforeTax +
                ", pbpAfterTax=" + pbpAfterTax +
                ", economicLimitYear=" + economicLimitYear +
                ", totalInvest=" + totalInvest +
                ", netProfitAfterTax=" + netProfitAfterTax +
                ", reportId='" + reportId + '\'' +
                ", filterProjectSet=" + filterProjectSet +
                ", filterOfficeSet=" + filterOfficeSet +
                ", filterNameSet=" + filterNameSet +
                ", filterIdSet=" + filterIdSet +
                ", pageNo=" + pageNo +
                ", pageSize=" + pageSize +
                ", count=" + count +
                '}';
    }
}
